/*
 * @Author: 一盏青灯欲锁魂
 * @Date: 2021-06-15 16:32:50
 * @LastEditTime: 2021-06-24 16:00:12
 * @Description: index控制器
 * @FilePath: \nest_demo\src\module\index\index.controller.ts
 */
import { Body, Controller, Get, Headers, Param, Patch, Post, Query } from '@nestjs/common';
import { IndexService } from './index.service';

/*
    * 1. 控制器作用
    *    用于监听接收浏览器端http相关的页面请求，封装了http请求相关的业务逻辑
    * 
    * 2. @Controller()装饰器
    *    1. 凡是被其所装饰的class类会被默认处理为nest控制器
    *    2. 接收的参数表示内部请求方法的url请求地址
    *       -  例如： @Controller('/index') -> @Get() -> localhost:3000/index -> 调用getText()方法
    *       -  例如： @Controller('/index') -> @Post('/set') -> localhost:3000/index/set -> 调用setText()方法
    * 
    * 3. @Get()、@Post()请求方法
    *    1. 用于设置设置当前所装饰的内部方法的请求方式，是get请求还是post请求，亦或者是其他方式的请求
    *    2. 这里只写了get、post请求，还是有delete、put、patch等等请求方式，用法一致
    * 
    * 4. @Patch(':id')请求方法
    *    1. 用于设置动态路由，参数拼接在路由上
    *    2. 需要搭配@Param(){id}使用，把拼接在路由上的动态参数传递成@param()中id参数，进行调用
    *       -  例如： @Controller('/index') -> @Patch(':id') -> localhost:3000/index/12121 -> '12121'就是拼接在路由上的参数
    *       -  例如： @Patch(':id') -> @Param(){id} -> id就是拼接在路由上的参数
    * 
    * 5. @Query(){id}
    *    用于获取get请求参数，'id'表示获取get请求中字段为id的参数值
    * 
    * 6. @Body(){id}
    *   用于获取post请求参数，'id'表示获取post请求中字段为id的参数值
    * 
    * 7. @Headers(){token}
    *    用于获取Header请求头中的token参数值
*/

@Controller('/index')
export class IndexController{
    constructor(private readonly indexService:IndexService){}

    @Get()
    getText(@Query(){id}){
        return this.indexService.getText(id);
    }

    @Post('/set')
    setText(@Body(){id}, @Headers(){token}){
        console.log(token);
        
        return this.indexService.setText(id, token);
    }

    @Patch(':id')
    getUrlData(@Param(){id}){
        return this.indexService.getUrlData(id);
    }
}